import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import DefineOptions from 'unplugin-vue-define-options/vite'
import { fileURLToPath, URL } from 'node:url'
import path from 'path';

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    DefineOptions(),
  ],
  base: '/',
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
    extensions: ['.js', '.json', '.jsx', '.mjs', '.ts', '.tsx', '.vue']
  },
  server: {
    port: 3000,
    open: true,
    cors: true
  },
  build: {
    outDir: 'dist',
    assetsDir: 'assets',
    sourcemap: false,
    // 生产环境移除 console 和 debugger
    minify: 'esbuild', // 改用 esbuild 代替 terser
    esbuildOptions: {
      drop: ['console', 'debugger'],
    },
    // 避免浏览器扩展冲突
    rollupOptions: {
      output: {
        manualChunks: {
          vendor: ['vue', 'vue-router', 'pinia'],
          ui: ['element-plus'],
        },
      },
    },
    // 优化构建性能
    chunkSizeWarningLimit: 1000,
    cssCodeSplit: true,
  },
  css: {
    // CSS 预处理器配置
    preprocessorOptions: {
      less: {
        // 自定义Less变量（与你提供的配置一致）
        modifyVars: {
          'arcoblue-6': '#0E42D2',
          'border-radius-small': '3px',
          'danger-6': '#CB272D',
          'color-fill-2': '#D9D9D9',
          'color-text-2': '#1D2129',
          'color-text-4': '#666666',
          // 引入自定义Less变量文件（注意路径需正确）
          hack: `true; @import (reference) "${path.resolve(__dirname, 'src/assets/styles/var.less')}";`,
        },
        // 启用JavaScript表达式（可选，按需开启）
        javascriptEnabled: true,
      },
    },
  }
})